package com.jack.vipmis.vip.member.service;

/*
 * File Name：Api.java
 * Copyright：Copyright 2008-2014 CiWong.Inc. All Rights Reserved.
 * Description： Api.java
 * Modify By：Administrator
 * Modify Date：2014-3-4
 * Modify Type：Add
 */

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.GZIPInputStream;

import org.apache.http.Header;
import org.apache.http.HttpException;
import org.apache.http.HttpRequest;
import org.apache.http.HttpRequestInterceptor;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.protocol.HttpContext;
import org.springframework.stereotype.Service;

import sun.misc.BASE64Encoder;

/**
 * TODO Description of class。
 * <p>
 * TODO Detail Description
 * <p>
 * TODO Sample Code
 * 
 * <pre>
 * </pre>
 * 
 * @author Administrator
 * @version ciwong v.1.0 2014-3-4
 * @since ciwong v.1.0
 */
@Service
public class SendMsg {

	@SuppressWarnings("deprecation")
	public String testSend(Long phone, int yz) throws Exception {
		String tel = phone.toString();

		DefaultHttpClient client = new DefaultHttpClient();

		client.addRequestInterceptor(new HttpRequestInterceptor() {
			@Override
			public void process(HttpRequest request, HttpContext context) throws HttpException, IOException {
				request.addHeader("Accept-Encoding", "gzip");
				request.addHeader("Authorization",
						"Basic " + new BASE64Encoder().encode("api:5660fc0edb78d7dcac10a61e95656203".getBytes("utf-8")));
			}
		});

		client.getParams().setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 30000);
		client.getParams().setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 30000);

		HttpPost request = new HttpPost("http://sms-api.luosimao.com/v1/send.json");

		ByteArrayOutputStream bos = null;
		InputStream bis = null;
		byte[] buf = new byte[10240];

		String content = null;
		try {
			List<NameValuePair> params = new ArrayList<NameValuePair>();
			params.add(new BasicNameValuePair("mobile", tel));
			params.add(new BasicNameValuePair("message", "您的验证码:" + yz + " 【我是会员】"));
			request.setEntity(new UrlEncodedFormEntity(params, "utf-8"));

			HttpResponse response = client.execute(request);

			if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
				bis = response.getEntity().getContent();
				Header[] gzip = response.getHeaders("Content-Encoding");

				bos = new ByteArrayOutputStream();
				int count;
				while ((count = bis.read(buf)) != -1) {
					bos.write(buf, 0, count);
				}
				bis.close();

				if (gzip.length > 0 && gzip[0].getValue().equalsIgnoreCase("gzip")) {
					GZIPInputStream gzin = new GZIPInputStream(new ByteArrayInputStream(bos.toByteArray()));
					StringBuffer sb = new StringBuffer();
					int size;
					while ((size = gzin.read(buf)) != -1) {
						sb.append(new String(buf, 0, size, "utf-8"));
					}
					gzin.close();
					bos.close();

					content = sb.toString();
				} else {
					content = bos.toString();
				}

				System.out.println(content);
			} else {
				System.out.println("error code is " + response.getStatusLine().getStatusCode());
			}
			return content;

		} finally {
			if (bis != null) {
				try {
					bis.close();// 最后要关闭BufferedReader
				} catch (Exception e) {
				}
			}
		}
	}
}
